<?php
    class UsersController extends AppController {
        public $helpers = array('Html', 'Form');
        public $uses = array('User');

        function descricao() {
        }

        public function view($id = null) {
            $this->User->id = $id;
            if (!$this->User->exists()) {
                throw new NotFoundException(__('Usuário inválido'));
            }
            $this->set('user', $this->User->read(null, $id));
        }

        public function add() {
            if ($this->request->is('post')) {
               
                $this->User->create();
                if ($this->User->save($this->request->data)) {
                    $this->Session->setFlash(__('Usuário foi salvo'));
                    $this->redirect(array('action' => 'login'));
                } else {
                    $this->Session->setFlash(__('Não foi possível salvar usuário. Tente novamente.'));
                }
            }
        }

        public function editar($id = null) {
            $this->User->id = $id;
            if (!$this->User->exists()) {
                throw new NotFoundException(__('Usuário inválido'));
            }
            if ($this->request->is('post') || $this->request->is('put')) {
                if ($this->User->save($this->request->data)) {
                    $this->Session->setFlash(__('Alteração concluída com sucesso'));
                    $this->redirect(array('action' => 'index'));
                } else {
                    $this->Session->setFlash(__('O usuário não pôde ser atualizado. Tente novamente.'));
                }
            } else {
                $this->request->data = $this->User->read(null, $id);
                unset($this->request->data['User']['password']);
            }
        }

        public function editar_perfil($id = null) {
            $this->User->id = $id;
            if (!$this->User->exists()) {
                throw new NotFoundException(__('Usuário inválido'));
            }
            if ($this->request->is('post') || $this->request->is('put')) {
                if ($this->User->save($this->request->data)) {
                    $this->Session->setFlash(__('Alteração concluída com sucesso'));
                    $this->redirect(array('action' => 'perfil'));
                } else {
                    $this->Session->setFlash(__('O usuário não pôde ser atualizado. Tente novamente.'));
                }
            } else {
                $this->request->data = $this->User->read(null, $id);
                unset($this->request->data['User']['password']);
            }
        }

        public function delete($id = null) {
            if (!$this->request->is('post')) {
                throw new MethodNotAllowedException();
            }
            $this->User->id = $id;
            if (!$this->User->exists()) {
                throw new NotFoundException(__('Usuário Inválido'));
            }
            if ($this->User->delete()) {
                $this->Session->setFlash(__('Usuário Deletado'));
                $this->redirect(array('action' => 'index'));
            }
            $this->Session->setFlash(__('Não foi possível deletar o usuário.'));
            $this->redirect(array('action' => 'index'));
        }

        public function beforeFilter() {
            parent::beforeFilter();
            $this->Auth->allow('add', 'descricao', 'logout', 'login', 'deletar', 'perfil', 'editar_perfil'); // Permitindo que os usuários se registrem
        }

         public function isAuthorized($user) {
           parent::isAuthorized();
        }
        
        public function login() {
            if($this->request->is('post')) {
                $user = $this->request->data['User']['username'];
                if ($this->Auth->login()) {
                $this->redirect(array('controller' => 'servicos', 'action' => 'meus_servicos'));
                } else {
                $this->Session->setFlash(__('Username ou senha icorretos, tente novamente'));
                }
            }
        }

        public function logout() {
            $this->redirect($this->Auth->logout());
        }

        public function perfil(){
            $args = array(
                'conditions' => array( 'id' => $this->Session->read('Auth.User.id'))
                );
            $this->set('users', $this->User->find('all', $args));
            //debug($this->User->find('all', $args));exit;
        }        

}

?>